package com.lee.message.core.config.lock;

import java.util.concurrent.TimeUnit;

public interface Lock {

    /**
     * 获取分布式锁
     * @param key 锁Key
     * @param lockExpire 锁的缓存时间（单位：秒）
     * @return boolean
     */
    boolean tryLock(String key, int lockExpire);

    /**
     * 获取分布式锁
     * @param key 锁Key
     * @param lockExpire 锁时间
     * @param timeUnit  锁单位
     * @return boolean
     */
    boolean tryLock(String key, int lockExpire, TimeUnit timeUnit);

    /**
     * 释放锁
     * @param key 锁Key
     */
    void unlock(String key);

    /**
     * 判断是否存在锁
     * @param key 锁Key
     * @return
     */
    boolean exists(String key);

}
